System and method for contact center fault diagnostics

ABSTRACT

A system and methods for contact center fault diagnostics, comprising a diagnostic engine and datastore of test cases used for testing components and services in a contact center, designed to operate on a contact center with a specified test campaign, allowing a contact center&#39;s various services and systems to be tested either internally or externally in an automated fashion with specified testcases being used to specify the format and expectations of a specific test, with reports of failures and points of failure being made available to system administrators.

CROSS-REFERENCE TO RELATED APPLICATIONS

None.

BACKGROUND Field of the Art

The disclosure relates to the field of contact centers, and moreparticularly to the field of contact center infrastructure testing andreporting.

Discussion of the State of the Art

Contact center technology is a growing field of interest that is vitalto effective communication with customers for many businesses. Manybusinesses utilize contact centers to manage their customer serviceneeds in one way or another, including technical support, forwarding andmapping customer inquiries to the proper departments whether interior orexterior to the business itself, and handling customer complaints andgeneral questions. However, these systems are varied and bulky, and noteasy to diagnose when errors and system failures arise.

It is currently the case that no automated diagnosing system exists forfinding errors and failures within a contact center's infrastructureefficiently, and this costs the contact center, and the business orbusinesses that utilize the center, time, energy, and money toeffectively diagnose these faults. Customers do not get the service theydesire or expect, and this in turn further harms the reputation of abusiness utilizing the contact center, resulting in compounded issuesdue to the lack of effective infrastructure fault diagnostics.

SUMMARY

What is needed, then, is an automated system for contact center faultdiagnostics that may be configured specifically for each contactcenter's infrastructure, and utilize both specific and generic testcasetemplates to ensure that services and components in a contact centeroperate effectively, consistently, and predictably.

Accordingly, the inventor has conceived and reduced to practice, asystem and methods for contact center fault diagnostics, utilizing adiagnostics engine framework to automatically test services and systemsin a contact center and report failures and the points of failure to asystem administrator, using campaigns of tests using specific testcasedata.

According to a preferred embodiment, a system for contact center faultdiagnostics is disclosed, comprising: a database comprising test cases,each test case configured to isolate a root cause of the error andcomprising: a chain of known contact center operations associated withthe error; a list of components in the chain associated with eachoperation; and an expected response from each component to anoperational instruction; and a diagnostic engine comprising at least aplurality of programming instructions stored in a memory of, andoperating on a processor of, a computing device, wherein the pluralityof programming instructions, when operating on the processor, cause thecomputing device to: receive notification of an error in operation of acontact center; retrieve one or more test cases for the error from thedatabase;

send an operational instruction to each component in the chain of knowncontact center operations associated with the error; time the responseof each component to each operational instruction; receive a responsefrom each component to each operational instruction; calculate a time ofresponse of each component to each operational instruction; anddetermine whether each component is a root cause of the error byevaluating whether its response meets a threshold time of response andwhether the response received for the component matches the expectedresponse for that component.

According to another preferred embodiment, a method for contact centerfault diagnostics is disclosed, comprising the steps of: receivingnotification of an error in operation of a contact center, using adiagnostic engine; retrieving one or more test cases for the error fromthe database, using a diagnostic engine; sending an operationalinstruction to each component in the chain of known contact centeroperations associated with the error, using a diagnostic engine; timingthe response of each component to each operational instruction, using adiagnostic engine; receiving a response from each component to eachoperational instruction, using a diagnostic engine; calculating a timeof response of each component to each operational instruction, using adiagnostic engine; and determining whether each component is a rootcause of the error by evaluating whether its response meets a thresholdtime of response and whether the response received for the componentmatches the expected response for that component, using a diagnosticengine.

BRIEF DESCRIPTION OF THE DRAWING FIGURES

The accompanying drawings illustrate several aspects and, together withthe description, serve to explain the principles of the inventionaccording to the aspects. It will be appreciated by one skilled in theart that the particular arrangements illustrated in the drawings aremerely exemplary, and are not to be considered as limiting of the scopeof the invention or the claims herein in any way.

FIG. 1 (PRIOR ART) is a typical system architecture diagram of a contactcenter including components commonly known in the art.

FIG. 2 is a block diagram illustrating an exemplary hardwarearchitecture of a computing device.

FIG. 3 is a block diagram illustrating an exemplary logical architecturefor a client device.

FIG. 4 is a block diagram showing an exemplary architectural arrangementof clients, servers, and external services.

FIG. 5 is another block diagram illustrating an exemplary hardwarearchitecture of a computing device.

FIG. 6 is a system diagram showing the high-level components used in theoperation of a system for contact center fault diagnostics.

FIG. 7 is a system diagram showing the internal components of adiagnostic engine as operating in a system for contact center faultdiagnostics.

FIG. 8 is a method diagram of the overall operation of a system for callcenter fault diagnostics.

FIG. 9 is a method diagram illustrating test campaign management using adiagnostic engine.

FIG. 10 is a method diagram illustrating the operation of diagnostictests to locate a fault or error in a contact center after initialfailure detection by a diagnostic engine.

DETAILED DESCRIPTION

The inventor has conceived, and reduced to practice, a system and methodfor contact center fault diagnostics.

One or more different aspects may be described in the presentapplication. Further, for one or more of the aspects described herein,numerous alternative arrangements may be described; it should beappreciated that these are presented for illustrative purposes only andare not limiting of the aspects contained herein or the claims presentedherein in any way. One or more of the arrangements may be widelyapplicable to numerous aspects, as may be readily apparent from thedisclosure. In general, arrangements are described in sufficient detailto enable those skilled in the art to practice one or more of theaspects, and it should be appreciated that other arrangements may beutilized and that structural, logical, software, electrical and otherchanges may be made without departing from the scope of the particularaspects. Particular features of one or more of the aspects describedherein may be described with reference to one or more particular aspectsor figures that form a part of the present disclosure, and in which areshown, by way of illustration, specific arrangements of one or more ofthe aspects. It should be appreciated, however, that such features arenot limited to usage in the one or more particular aspects or figureswith reference to which they are described. The present disclosure isneither a literal description of all arrangements of one or more of theaspects nor a listing of features of one or more of the aspects thatmust be present in all arrangements.

Headings of sections provided in this patent application and the titleof this patent application are for convenience only, and are not to betaken as limiting the disclosure in any way.

Devices that are in communication with each other need not be incontinuous communication with each other, unless expressly specifiedotherwise. In addition, devices that are in communication with eachother may communicate directly or indirectly through one or morecommunication means or intermediaries, logical or physical.

A description of an aspect with several components in communication witheach other does not imply that all such components are required. To thecontrary, a variety of optional components may be described toillustrate a wide variety of possible aspects and in order to more fullyillustrate one or more aspects. Similarly, although process steps,method steps, algorithms or the like may be described in a sequentialorder, such processes, methods and algorithms may generally beconfigured to work in alternate orders, unless specifically stated tothe contrary. In other words, any sequence or order of steps that may bedescribed in this patent application does not, in and of itself,indicate a requirement that the steps be performed in that order. Thesteps of described processes may be performed in any order practical.Further, some steps may be performed simultaneously despite beingdescribed or implied as occurring non-simultaneously (e.g., because onestep is described after the other step). Moreover, the illustration of aprocess by its depiction in a drawing does not imply that theillustrated process is exclusive of other variations and modificationsthereto, does not imply that the illustrated process or any of its stepsare necessary to one or more of the aspects, and does not imply that theillustrated process is preferred. Also, steps are generally describedonce per aspect, but this does not mean they must occur once, or thatthey may only occur once each time a process, method, or algorithm iscarried out or executed. Some steps may be omitted in some aspects orsome occurrences, or some steps may be executed more than once in agiven aspect or occurrence.

When a single device or article is described herein, it will be readilyapparent that more than one device or article may be used in place of asingle device or article. Similarly, where more than one device orarticle is described herein, it will be readily apparent that a singledevice or article may be used in place of the more than one device orarticle.

The functionality or the features of a device may be alternativelyembodied by one or more other devices that are not explicitly describedas having such functionality or features. Thus, other aspects need notinclude the device itself.

Techniques and mechanisms described or referenced herein will sometimesbe described in singular form for clarity. However, it should beappreciated that particular aspects may include multiple iterations of atechnique or multiple instantiations of a mechanism unless notedotherwise. Process descriptions or blocks in figures should beunderstood as representing modules, segments, or portions of code whichinclude one or more executable instructions for implementing specificlogical functions or steps in the process. Alternate implementations areincluded within the scope of various aspects in which, for example,functions may be executed out of order from that shown or discussed,including substantially concurrently or in reverse order, depending onthe functionality involved, as would be understood by those havingordinary skill in the art.

Conceptual Architecture

FIG. 1 (PRIOR ART) is a typical system architecture diagram of a contactcenter 100 known to the art. A contact center is similar to a callcenter, but a contact center has more features. While a call center maycommunicate mainly by voice, a contact center may communicate via email;text chat, such as, but not limited to, instant messaging, social mediaposts, and SMS interaction; and web interfaces in addition to voicecommunication in order to facilitate communications between a customerendpoint 110 and a resource endpoint 120. Resource 120 may include, butis not limited to, agents, sales representatives, servicerepresentatives, or collection agents handling communications withcustomers 110 on behalf of an enterprise. Resources 120 may be in-housewithin contact center 100, or may be remote, such as out-sourcing to athird party, or agents working from home. Contact center 100 may beindependently operated or networked with additional centers, and mayoften be linked to a corporate computer network.

Contact center 100 may further comprise network interface 130, textchannels 140, multimedia channels 145, and contact center components150. Text channels 140 may be communications conducted mainly throughtext, and may comprise social media 141, email 142, short messageservice (SMS) 143, or instant messaging (IM) 144, and would communicatethrough their counterparts within contact center components 150, eachrespectively being social server 159, email server 157, SMS server 160,and IM server 158.

Multimedia channels 145 may be communications conducted through avariety of mediums, and may comprise a media server 146, private branchexchange (PBX) 147, interactive voice response (IVR) 148, and bots 149.Text channels 140 and multimedia channels 145 may act as third partiesto engage with outside social media services and so a social server 159may be required to interact with the third party social media 141.Multimedia channels 145, are typically present in an enterprise'sdatacenter; but could be hosted in a remote facility, in a cloudfacility, or in a multifunction service facility.

Contact center components 150 may comprise a routing server 151, asoftswitch 152, an outbound server 153, a computer telephony integration(CTI) server 154, a state and statistics (STAT) server 155, an automatedcall distribution facility (ACD) 156, an email server 157, an IM server158, a social server 159, an SMS server 160, a routing database 170, ahistorical database 172, and a campaign database 171. It is possiblethat other servers and databases may exist within a contact center, butin this example the referenced components are used. Contact centercomponents 150, including servers, databases, and other key modules thatmay be present in a typical contact center may work in a black boxenvironment, may be used collectively in one location, or may be spreadover a plurality of locations. Contact center components 150 may even becloud-based, and more than one of each component shown may be present ina single location.

Customers 110 may communicate by use of any known form of communicationknown in the art, be it by a telephone 111, a mobile smartphone 112, atablet 113, a laptop 114, or a desktop computer 115, to name a fewexamples. Similarly, resources 120 may communicate by use of any knownform of communication known in the art, be it by a telephone 121, amobile smartphone 122, a tablet 123, a laptop 124, or a desktop computer125, to name a few examples. Communication may be conducted through anetwork interface 130 by way of at least one channel, such as a textchannel 140 or a multimedia channel 145, which communicates with aplurality of contact center components 150. Available network interfaces130 may include, but are not limited to, a public switched telephonenetworks (PSTN) 131, an internet network 132, a wide area network (WAN)133, or a local area network (LAN) 134.

To provide a few example cases, a customer calling on telephone handset111 may connect through PSTN 131 and terminate on PBX 147; a video calloriginating from tablet 123 may connect through internet connection 132and terminate on media server 146; or a customer device such assmartphone 112 may connect via WAN 133, and terminate on IVR 148, suchas in the case of a customer calling a customer support line for a bankor a utility service. In another example, an email server 157 would beowned by the contact center 100 and would be used to communicate with athird-party email channel 142. The number of communication possibilitiesare vast between the number of possible devices of resources 120,devices of customers 110, networks 130, text channels 140, multimediachannels 145, and contact center components 150, hence the systemdiagram on FIG. 1 indicates connections between delineated groups ratherthan individual connections for clarity.

Continuing from the examples given above, in some conditions where asingle medium (such as ordinary telephone calls) is used forinteractions that require routing, media server 146 may be morespecifically PBX 147, ACD 156, or similar media-specific switchingsystem. Generally, when interactions arrive at media server 146, a routerequest, or a variation of a route request (for example, an invitemessage) is sent to softswitch 152 or to an equivalent system such asCTI server 154. A route request may be a data message sent from amedia-handling device, such as media server 146, to a signaling system,such as softswitch 152. The message may comprise a request for one ormore target destinations to which to send (or route, or deliver) thespecific interaction with regard to which the route request was sent.softswitch 152 or its equivalent may, in some cases, carry out anyrequired routing logic itself, or it may forward the route requestmessage to routing server 151. Routing server 151 executes, usingstatistical data from state server 154 and, optionally, data fromrouting database 170, a routing script in response to the route requestmessage and sends a response to media server 146 directing it to routethe interaction to a specific target in resources 120.

In another case, routing server 151 uses historical information fromhistorical database 172, or real-time information from campaign database171, or both, as well as configuration information (generally availablefrom a distributed configuration system, not shown for convenience) andinformation from routing database 170. State server 154 receives eventnotifications from media server 146, softswitch 152, or both regardingevents pertaining to a plurality of specific interactions handled bymedia server 146, softswitch 152, or both, and state server 154 computesone or more statistics for use in routing based on the received eventnotifications. Routing database 170 may comprise multiple distinctdatabases, either stored in one database management system or inseparate database management systems. Examples of data that may normallybe found in routing database 170 may include, but are not limited to:customer relationship management (CRM) data; data pertaining to one ormore social networks, including, but not limited to network graphscapturing social relationships within relevant social networks, or mediaupdates made by members of relevant social networks; skills datapertaining to a members of resources 120, which may be human agents,automated software agents, interactive voice response scripts, and soforth; data extracted from third party data sources includingcloud-based data sources such as CRM and other data fromSALESFORCE.COM™, credit data from EXPERIAN™, consumer data fromDATA.COM™; or any other data that may be useful in making routingdecisions. It will be appreciated by one having ordinary skill in theart that there are many means of data integration known in the art, anyof which may be used to obtain data from premise-based, singlemachine-based, cloud-based, public or private data sources as needed,without departing from the scope of the invention. Using informationobtained from one or more of state server 154, routing database 170,campaign database 172, historical database 171, and any associatedconfiguration systems, routing server 151 selects a routing target fromamong a plurality of available resource devices 120, and routing server151 then instructs softswitch 152 to route the interaction in questionto the selected resource 120, and softswitch 152 in turn directs mediaserver 146 to establish an appropriate connection between customer 110and target resource 120. In this case, the routing script comprises atleast the steps of generating a list of all possible routing targets forthe interaction regardless of the real-time state of the routing targetsusing at least an interaction identifier and a plurality of dataelements pertaining to the interaction, removing a subset of routingtargets from the generated list based on the subset of routing targetsbeing logged out to obtain a modified list, computing a plurality offitness parameters for each routing target in the modified list, sortingthe modified list based on one or more of the fitness parameters using asorting rule to obtain a sorted target list, and using a targetselection rule to consider a plurality of routing targets starting atthe beginning of the sorted target list until a routing target isselected. It should be noted that customers 110 are generally, but notnecessarily, associated with human customers or users. Nevertheless, itshould be understood that routing of other work or interaction types ispossible, although in any case, is limited to act or change withoutinput from a management team.

FIG. 6 is a system diagram showing the high-level components used in theoperation of a system for contact center fault diagnostics. A computerterminal 610 connects to a fault diagnostics system 620, which may beaccomplished either over a network, via a direct connection, or thefault diagnostics system 620 may operate as part of the computerterminal 610. This connection or operation allows for the transfer ofdata between both, such that test campaigns may be created on theterminal 610 and operated by the diagnostics system 620 and the progressand results of test campaigns may be received and monitored by aterminal 610. System settings and configuration may also be specified asrequired, on a terminal 610, for the diagnostics system 620. Thecomponents in a diagnostic system include a datastore for specializedtest-cases 622 which may comprise executable tests or the data requiredfor a testing engine to then execute a test on a contact center service,and a diagnostic engine 621 which executes the actual tests, receivesnotification of successful or failing tests, and handles communicationbetween a terminal 610 and a plurality of contact center automaticcommunications 640 over a network 630. The data contained in thedatastore for test cases 622 comprises at least, in the case of datarequired for testing, the relevant services and components in a contactcenter and how to communicate with them, the expected results of variousqueries sent to the services of a contact center, the acceptable timingof responses from the contact center, and if applicable, the secondaryresponses from the diagnostics engine and the tertiary response from thecontact center. Such a network 630 may be the Internet or some otherWide Area Network (WAN), a Local Area Network (LAN), a Public SwitchedTelephone Network (PSTN), or some other network. The automatedcommunications in a contact center 640 may comprise any combination of,or all of, an email server 641, a Short Message Service (SMS) server642, a chat server 643, or a voice system 644 such as an InteractiveVoice Response (IVR) server. Communication between a diagnostic engine621 as part of a diagnostics system 620, and a contact center'sautomated communications 640, include initial query of at least one of acontact center's automated communication methods 640 by the diagnosticssystem 620, response or responses from the automated communicationmethods 640, and depending on the specific tests being run either afurther response from a diagnostic system 620 based on stored test cases622 or evaluation of the initial response from the contact centercommunications 640. Based on the expected and actual results of thecommunications, the diagnostic engine 621 then classifies the experienceas either successful or unsuccessful, all of which is viewable andmanageable by a terminal 610.

FIG. 7 is a system diagram showing the internal components of adiagnostic engine as operating in a system for contact center faultdiagnostics. A diagnostics engine 621 operates internal componentscomprising at least a naming engine 710 which manages the naming ofcampaigns, tests, and services associated with the diagnostics engine621, a test executor 720 which executes automated test cases as receivedfrom a database connector 740 from a datastore of test cases 750, and afailure detector 730 which specifically works to detect unsuccessfulresults from automated testing as executed by the test executor 720, andbased on responses received from contact center automated communicationsin response to an automated test execution 760.

Detailed Description of Exemplary Aspects

FIG. 8 is a method diagram of the overall operation of a system for callcenter fault diagnostics. A first step in the method of the system fordiagnostic purposes is to receive notification of an error in operationof a contact center 810, which may or may not be received duringautomated testing. Such a notification of an error may take the form ofa recognized error code, an error message, unexpected responses fromautomated queries to test the contact center's automated responses, or afailure to even reach the contact center with an initial automatedquery. A contact center may pro-actively send such a notification to thediagnostics system if configured in such a way. After receiving anotification of failure or error from a contact center, the diagnosticsystem retrieves one or more test cases for the error from the testcases database 820, allowing it to interpret or execute the test caseand send an operational instruction to each component in the chain ofknown contact center operations associated with the error 830. Thetiming of the response of each component to each operational instructionis measured 840, the timing ceasing when it receives a response fromeach component to each operational instruction 850, allowing it tocalculate the time of response of each component to each operationalinstruction 860 and attempt to determine whether any individualcomponent is a root cause of the error by evaluating whether itsresponse meets a threshold time of response and whether the responsereceived for the component matches the expected response for thatcomponent 870. Not only is the timing of the received response from eachcomponent or service measured, but the received response must matchexpected test case results, otherwise that component or service will bemarked as being a point of failure for the test case.

FIG. 9 is a method diagram illustrating test campaign management using adiagnostic engine. First a monitoring test campaign is entered into thetesting system 910, a monitoring test campaign being a periodic set oftests that will be performed on a contact center's services and beingunder a specific ID, such that a test campaign essentially acts as anidentifiable sequence of tests to be performed periodically for aspecified contact center's services and systems. This may be enteredinto the system automatically or manually, then requiring campaignservices are named appropriately to comply with the system 920. Theimportance of naming a specific service or system to test is thatservices may be included in the testing with the diagnostic engine invarious embodiments based on their naming or extension, the namingconventions being able to be configured into the system as needed in aspecific embodiment. Once services and systems are input into the systemunder the proper campaign identification, services in the campaign arelinked to specific test cases in the datastore 930, so that thediagnostic engine is able to determine what the system or service issupposed to behave like, what is considered the appropriate timing forthe responses from the services or systems, and what the proper queryingis. For instance, for testing a contact center's chain of servicesrelating to an IVR, test case data may contain data including aconnection string to one of the related services or components in theIVR system, the query to be sent, and the expected format or content ofthe response from the component. After the test cases are linked to thespecific tests, a monitoring campaign periodically tests the specifiedservices 940 as specified with the data from the previous steps. Uponfailure of a given test, the test is re-run to reduce false-positivesand ensure repeatable results 950, such that a single failure thatcannot be repeated upon re-testing does not result in progression of thesystem's failure detection. However, if the subsequent monitoring of thetest campaign also results in a failure or error message, the diagnosticengine attempts to locate points of error in the tested system(s) orservice(s) 960 by testing each individual service and determining which,if any, test case does not pass. This is then made available for aterminal to view in a report 970.

FIG. 10 is a method diagram illustrating the operation of diagnostictests to locate a fault or error in a contact center after initialfailure detection by a diagnostic engine. First the diagnostic enginequeries the database for test cases matching a given campaign ID 1010,such that it receives the appropriate test cases for whichever campaignis currently operating. The test case is used to execute a test 1020with the specified parameters and monitored for the specified results inthe testcase data, before the test returns a failed result 1030according to the specified testcase. Such a failure may be an actualreported error code or error message, a failure to respond to a query orconnection attempt in the specified amount of time, or failure torespond to a connection or query with the expected response format orcontent. Upon a testcase failing to be met, the same test is run withthe same testcase data a second time 1040 to ensure a repeatablebehavior and not a false-positive. Upon subsequent failure, devices andservices in the pipeline of the test and campaign are examined todetermine point or points of failure 1050, with individual services,connections, components and systems specified being tested to preciselydetermine any point or points of failure 1060. An accessing terminal isthen informed of the results of these tests in a report 1070.

Hardware Architecture

Generally, the techniques disclosed herein may be implemented onhardware or a combination of software and hardware. For example, theymay be implemented in an operating system kernel, in a separate userprocess, in a library package bound into network applications, on aspecially constructed machine, on an application-specific integratedcircuit (ASIC), or on a network interface card.

Software/hardware hybrid implementations of at least some of the aspectsdisclosed herein may be implemented on a programmable network-residentmachine (which should be understood to include intermittently connectednetwork-aware machines) selectively activated or reconfigured by acomputer program stored in memory. Such network devices may havemultiple network interfaces that may be configured or designed toutilize different types of network communication protocols. A generalarchitecture for some of these machines may be described herein in orderto illustrate one or more exemplary means by which a given unit offunctionality may be implemented. According to specific aspects, atleast some of the features or functionalities of the various aspectsdisclosed herein may be implemented on one or more general-purposecomputers associated with one or more networks, such as for example anend-user computer system, a client computer, a network server or otherserver system, a mobile computing device (e.g., tablet computing device,mobile phone, smartphone, laptop, or other appropriate computingdevice), a consumer electronic device, a music player, or any othersuitable electronic device, router, switch, or other suitable device, orany combination thereof. In at least some aspects, at least some of thefeatures or functionalities of the various aspects disclosed herein maybe implemented in one or more virtualized computing environments (e.g.,network computing clouds, virtual machines hosted on one or morephysical computing machines, or other appropriate virtual environments).

Referring now to FIG. 2, there is shown a block diagram depicting anexemplary computing device 10 suitable for implementing at least aportion of the features or functionalities disclosed herein. Computingdevice 10 may be, for example, any one of the computing machines listedin the previous paragraph, or indeed any other electronic device capableof executing software- or hardware-based instructions according to oneor more programs stored in memory. Computing device 10 may be configuredto communicate with a plurality of other computing devices, such asclients or servers, over communications networks such as a wide areanetwork a metropolitan area network, a local area network, a wirelessnetwork, the Internet, or any other network, using known protocols forsuch communication, whether wireless or wired.

In one aspect, computing device 10 includes one or more centralprocessing units (CPU) 12, one or more interfaces 15, and one or morebusses 14 (such as a peripheral component interconnect (PCI) bus). Whenacting under the control of appropriate software or firmware, CPU 12 maybe responsible for implementing specific functions associated with thefunctions of a specifically configured computing device or machine. Forexample, in at least one aspect, a computing device 10 may be configuredor designed to function as a server system utilizing CPU 12, localmemory 11 and/or remote memory 16, and interface(s) 15. In at least oneaspect, CPU 12 may be caused to perform one or more of the differenttypes of functions and/or operations under the control of softwaremodules or components, which for example, may include an operatingsystem and any appropriate applications software, drivers, and the like.

CPU 12 may include one or more processors 13 such as, for example, aprocessor from one of the Intel, ARM, Qualcomm, and AMD families ofmicroprocessors. In some aspects, processors 13 may include speciallydesigned hardware such as application-specific integrated circuits(ASICs), electrically erasable programmable read-only memories(EEPROMs), field-programmable gate arrays (FPGAs), and so forth, forcontrolling operations of computing device 10. In a particular aspect, alocal memory 11 (such as non-volatile random access memory (RAM) and/orread-only memory (ROM), including for example one or more levels ofcached memory) may also form part of CPU 12. However, there are manydifferent ways in which memory may be coupled to system 10. Memory 11may be used for a variety of purposes such as, for example, cachingand/or storing data, programming instructions, and the like. It shouldbe further appreciated that CPU 12 may be one of a variety ofsystem-on-a-chip (SOC) type hardware that may include additionalhardware such as memory or graphics processing chips, such as a QUALCOMMSNAPDRAGON™ or SAMSUNG EXYNOS™ CPU as are becoming increasingly commonin the art, such as for use in mobile devices or integrated devices.

As used herein, the term “processor” is not limited merely to thoseintegrated circuits referred to in the art as a processor, a mobileprocessor, or a microprocessor, but broadly refers to a microcontroller,a microcomputer, a programmable logic controller, anapplication-specific integrated circuit, and any other programmablecircuit.

In one aspect, interfaces 15 are provided as network interface cards(NICs). Generally, NICs control the sending and receiving of datapackets over a computer network; other types of interfaces 15 may forexample support other peripherals used with computing device 10. Amongthe interfaces that may be provided are Ethernet interfaces, frame relayinterfaces, cable interfaces, DSL interfaces, token ring interfaces,graphics interfaces, and the like. In addition, various types ofinterfaces may be provided such as, for example, universal serial bus(USB), Serial, Ethernet, FIREWIRE™, THUNDERBOLT™, PCI, parallel, radiofrequency (RF), BLUETOOTH™, near-field communications (e.g., usingnear-field magnetics), 902.11 (WiFi), frame relay, TCP/IP, ISDN, fastEthernet interfaces, Gigabit Ethernet interfaces, Serial ATA (SATA) orexternal SATA (ESATA) interfaces, high-definition multimedia interface(HDMI), digital visual interface (DVI), analog or digital audiointerfaces, asynchronous transfer mode (ATM) interfaces, high-speedserial interface (HSSI) interfaces, Point of Sale (POS) interfaces,fiber data distributed interfaces (FDDIs), and the like. Generally, suchinterfaces 15 may include physical ports appropriate for communicationwith appropriate media. In some cases, they may also include anindependent processor (such as a dedicated audio or video processor, asis common in the art for high-fidelity AN hardware interfaces) and, insome instances, volatile and/or non-volatile memory (e.g., RAM).

Although the system shown in FIG. 2 illustrates one specificarchitecture for a computing device 10 for implementing one or more ofthe aspects described herein, it is by no means the only devicearchitecture on which at least a portion of the features and techniquesdescribed herein may be implemented. For example, architectures havingone or any number of processors 13 may be used, and such processors 13may be present in a single device or distributed among any number ofdevices. In one aspect, a single processor 13 handles communications aswell as routing computations, while in other aspects a separatededicated communications processor may be provided. In various aspects,different types of features or functionalities may be implemented in asystem according to the aspect that includes a client device (such as atablet device or smartphone running client software) and server systems(such as a server system described in more detail below).

Regardless of network device configuration, the system of an aspect mayemploy one or more memories or memory modules (such as, for example,remote memory block 16 and local memory 11) configured to store data,program instructions for the general-purpose network operations, orother information relating to the functionality of the aspects describedherein (or any combinations of the above). Program instructions maycontrol execution of or comprise an operating system and/or one or moreapplications, for example. Memory 16 or memories 11, 16 may also beconfigured to store data structures, configuration data, encryptiondata, historical system operations information, or any other specific orgeneric non-program information described herein.

Because such information and program instructions may be employed toimplement one or more systems or methods described herein, at least somenetwork device aspects may include nontransitory machine-readablestorage media, which, for example, may be configured or designed tostore program instructions, state information, and the like forperforming various operations described herein. Examples of suchnontransitory machine-readable storage media include, but are notlimited to, magnetic media such as hard disks, floppy disks, andmagnetic tape; optical media such as CD-ROM disks; magneto-optical mediasuch as optical disks, and hardware devices that are speciallyconfigured to store and perform program instructions, such as read-onlymemory devices (ROM), flash memory (as is common in mobile devices andintegrated systems), solid state drives (SSD) and “hybrid SSD” storagedrives that may combine physical components of solid state and hard diskdrives in a single hardware device (as are becoming increasingly commonin the art with regard to personal computers), memristor memory, randomaccess memory (RAM), and the like. It should be appreciated that suchstorage means may be integral and non-removable (such as RAM hardwaremodules that may be soldered onto a motherboard or otherwise integratedinto an electronic device), or they may be removable such as swappableflash memory modules (such as “thumb drives” or other removable mediadesigned for rapidly exchanging physical storage devices),“hot-swappable” hard disk drives or solid state drives, removableoptical storage discs, or other such removable media, and that suchintegral and removable storage media may be utilized interchangeably.Examples of program instructions include both object code, such as maybe produced by a compiler, machine code, such as may be produced by anassembler or a linker, byte code, such as may be generated by forexample a JAVA™ compiler and may be executed using a Java virtualmachine or equivalent, or files containing higher level code that may beexecuted by the computer using an interpreter (for example, scriptswritten in Python, Perl, Ruby, Groovy, or any other scripting language).

In some aspects, systems may be implemented on a standalone computingsystem. Referring now to FIG. 3, there is shown a block diagramdepicting a typical exemplary architecture of one or more aspects orcomponents thereof on a standalone computing system. Computing device 20includes processors 21 that may run software that carry out one or morefunctions or applications of aspects, such as for example a clientapplication 24. Processors 21 may carry out computing instructions undercontrol of an operating system 22 such as, for example, a version ofMICROSOFT WINDOWS™ operating system, APPLE macOS™ or iOS™ operatingsystems, some variety of the Linux operating system, ANDROID™ operatingsystem, or the like. In many cases, one or more shared services 23 maybe operable in system 20, and may be useful for providing commonservices to client applications 24. Services 23 may for example beWINDOWS™ services, user-space common services in a Linux environment, orany other type of common service architecture used with operating system21. Input devices 28 may be of any type suitable for receiving userinput, including for example a keyboard, touchscreen, microphone (forexample, for voice input), mouse, touchpad, trackball, or anycombination thereof. Output devices 27 may be of any type suitable forproviding output to one or more users, whether remote or local to system20, and may include for example one or more screens for visual output,speakers, printers, or any combination thereof. Memory 25 may berandom-access memory having any structure and architecture known in theart, for use by processors 21, for example to run software. Storagedevices 26 may be any magnetic, optical, mechanical, memristor, orelectrical storage device for storage of data in digital form (such asthose described above, referring to FIG. 2). Examples of storage devices26 include flash memory, magnetic hard drive, CD-ROM, and/or the like.

In some aspects, systems may be implemented on a distributed computingnetwork, such as one having any number of clients and/or servers.Referring now to FIG. 4, there is shown a block diagram depicting anexemplary architecture 30 for implementing at least a portion of asystem according to one aspect on a distributed computing network.According to the aspect, any number of clients 33 may be provided. Eachclient 33 may run software for implementing client-side portions of asystem; clients may comprise a system 20 such as that illustrated inFIG. 3. In addition, any number of servers 32 may be provided forhandling requests received from one or more clients 33. Clients 33 andservers 32 may communicate with one another via one or more electronicnetworks 31, which may be in various aspects any of the Internet, a widearea network, a mobile telephony network (such as CDMA or GSM cellularnetworks), a wireless network (such as WiFi, WiMAX, LTE, and so forth),or a local area network (or indeed any network topology known in theart; the aspect does not prefer any one network topology over anyother). Networks 31 may be implemented using any known networkprotocols, including for example wired and/or wireless protocols.

In addition, in some aspects, servers 32 may call external services 37when needed to obtain additional information, or to refer to additionaldata concerning a particular call. Communications with external services37 may take place, for example, via one or more networks 31. In variousaspects, external services 37 may comprise web-enabled services orfunctionality related to or installed on the hardware device itself. Forexample, in one aspect where client applications 24 are implemented on asmartphone or other electronic device, client applications 24 may obtaininformation stored in a server system 32 in the cloud or on an externalservice 37 deployed on one or more of a particular enterprise's oruser's premises.

In some aspects, clients 33 or servers 32 (or both) may make use of oneor more specialized services or appliances that may be deployed locallyor remotely across one or more networks 31. For example, one or moredatabases 34 may be used or referred to by one or more aspects. Itshould be understood by one having ordinary skill in the art thatdatabases 34 may be arranged in a wide variety of architectures andusing a wide variety of data access and manipulation means. For example,in various aspects one or more databases 34 may comprise a relationaldatabase system using a structured query language (SQL), while othersmay comprise an alternative data storage technology such as thosereferred to in the art as “NoSQL” (for example, HADOOP CASSANDRA™,GOOGLE BIGTABLE™, and so forth). In some aspects, variant databasearchitectures such as column-oriented databases, in-memory databases,clustered databases, distributed databases, or even flat file datarepositories may be used according to the aspect. It will be appreciatedby one having ordinary skill in the art that any combination of known orfuture database technologies may be used as appropriate, unless aspecific database technology or a specific arrangement of components isspecified for a particular aspect described herein. Moreover, it shouldbe appreciated that the term “database” as used herein may refer to aphysical database machine, a cluster of machines acting as a singledatabase system, or a logical database within an overall databasemanagement system. Unless a specific meaning is specified for a givenuse of the term “database”, it should be construed to mean any of thesesenses of the word, all of which are understood as a plain meaning ofthe term “database” by those having ordinary skill in the art.

Similarly, some aspects may make use of one or more security systems 36and configuration systems 35. Security and configuration management arecommon information technology (IT) and web functions, and some amount ofeach are generally associated with any IT or web systems. It should beunderstood by one having ordinary skill in the art that anyconfiguration or security subsystems known in the art now or in thefuture may be used in conjunction with aspects without limitation,unless a specific security 36 or configuration system 35 or approach isspecifically required by the description of any specific aspect.

FIG. 5 shows an exemplary overview of a computer system 40 as may beused in any of the various locations throughout the system. It isexemplary of any computer that may execute code to process data. Variousmodifications and changes may be made to computer system 40 withoutdeparting from the broader scope of the system and method disclosedherein. Central processor unit (CPU) 41 is connected to bus 42, to whichbus is also connected memory 43, nonvolatile memory 44, display 47,input/output (I/O) unit 48, and network interface card (NIC) 53. I/Ounit 48 may, typically, be connected to keyboard 49, pointing device 50,hard disk 52, and real-time clock 51. NIC 53 connects to network 54,which may be the Internet or a local network, which local network may ormay not have connections to the Internet. Also shown as part of system40 is power supply unit 45 connected, in this example, to a mainalternating current (AC) supply 46. Not shown are batteries that couldbe present, and many other devices and modifications that are well knownbut are not applicable to the specific novel functions of the currentsystem and method disclosed herein. It should be appreciated that someor all components illustrated may be combined, such as in variousintegrated applications, for example Qualcomm or Samsungsystem-on-a-chip (SOC) devices, or whenever it may be appropriate tocombine multiple capabilities or functions into a single hardware device(for instance, in mobile devices such as smartphones, video gameconsoles, in-vehicle computer systems such as navigation or multimediasystems in automobiles, or other integrated hardware devices).

In various aspects, functionality for implementing systems or methods ofvarious aspects may be distributed among any number of client and/orserver components. For example, various software modules may beimplemented for performing various functions in connection with thesystem of any particular aspect, and such modules may be variouslyimplemented to run on server and/or client components.

The skilled person will be aware of a range of possible modifications ofthe various aspects described above. Accordingly, the present inventionis defined by the claims and their equivalents.

What is claimed is:
 1. A system for contact center fault diagnostics,comprising: a database comprising test cases, each test case configuredto isolate a root cause of an error in operation of a contact center andcomprising: a chain of known contact center operations associated withthe error; a list of components in the chain associated with eachoperation; and an expected response from each component to anoperational instruction; and a diagnostic engine comprising at least aplurality of programming instructions stored in a memory of, andoperating on a processor of, a computing device, wherein the pluralityof programming instructions, when operating on the processor, cause thecomputing device to: receive notification of an error in operation of acontact center; retrieve one or more test cases for the error from thedatabase; send an operational instruction to each component in the chainof known contact center operations associated with the error; time theresponse of each component to each operational instruction; receive aresponse from each component to each operational instruction; calculatea time of response of each component to each operational instruction;and determine whether each component is a root cause of the error byevaluating whether its response meets a threshold time of response andwhether the response received for the component matches the expectedresponse for that component.
 2. The system of claim 1, wherein thediagnostic engine and database comprising test cases are located on orconnected as part of a server which connects to a contact center over anetwork.
 3. The system of claim 1, wherein the diagnostic engine anddatabase comprising test cases are located on or connected as part of aserver which operates within a local network as part of a contactcenter.
 4. The system of claim 1, wherein the diagnostic engine anddatabase comprising test cases are located on separate servers orcomputing devices from each other.
 5. A method for contact center faultdiagnostics, comprising the steps of: receiving notification of an errorin operation of a contact center, using a diagnostic engine; retrievingone or more test cases for the error from the database, using adiagnostic engine; sending an operational instruction to each componentin the chain of known contact center operations associated with theerror, using a diagnostic engine; timing the response of each componentto each operational instruction, using a diagnostic engine; receiving aresponse from each component to each operational instruction, using adiagnostic engine; calculating a time of response of each component toeach operational instruction, using a diagnostic engine; and determiningwhether each component is a root cause of the error by evaluatingwhether its response meets a threshold time of response and whether theresponse received for the component matches the expected response forthat component, using a diagnostic engine.
 6. The method of claim 5,wherein the diagnostic engine and database comprising test cases arelocated on or connected as part of a server which connects to a contactcenter over a network.
 7. The method of claim 5, wherein the diagnosticengine and database comprising test cases are located on or connected aspart of a server which operates within a local network as part of acontact center.
 8. The method of claim 5, wherein the diagnostic engineand database comprising test cases are located on separate servers orcomputing devices from each other.